package cn.newtouch.basic.controller;

import cn.newtouch.basic.util.FastDfsUtils;
import cn.newtouch.basic.util.JsonResult;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

@RestController
@RequestMapping("/fastDfs")
public class FastDfsController {

    /**
     *上传的接口
     * @return
     */
    //@RequestPart对复杂表单项的处理，默认name="file",与上传文件的name属性值一致
    @PostMapping
    public JsonResult upload(@RequestPart(value = "file",required = true) MultipartFile file){

        try {
            // 获取原始文件名称  saldfja.lsfsd.jpg
            String originalFilename = file.getOriginalFilename();
            // 获取文件的后缀，不要.
            String substring = originalFilename.substring(originalFilename.lastIndexOf(".") + 1);

            // 调用工具类中的upload方法
            String path = FastDfsUtils.upload(file.getBytes(), substring);

            // 把path设置给jsonResult中的 resultObj属性
            return JsonResult.me().setResultObj(path);
        } catch (Exception e) {
            e.printStackTrace();
            return JsonResult.me().setMsg("上传失败");
        }



       /* try {
            //获取原始文件名字
            String filename = file.getOriginalFilename();
            //截取格式 不要. 因为工具类里面也没有加. 所以要+1才不会被截取到
            String substring = filename.substring(filename.lastIndexOf(".") + 1);
            //调用工具类里面的上传方法 第一个参数必须是byte[]格式的
            String path = FastDfsUtils.upload(file.getBytes(), substring);
            //返回一个路径 给前端的handleSuccess事件用的
            return JsonResult.me().setResultObj(path);
        } catch (Exception e) {
            e.printStackTrace();
            return JsonResult.me().setMsg("上传失败！");
        }*/
    }


    /**
     *删除的方法
     * @return
     */
    @DeleteMapping
    public JsonResult delete(@RequestParam(value = "path",required = true) String path){
        try {
            //调用工具类的delete方法
            //截取路径
            String pathTmp = path.substring(1); // 原始路径 goup1/xxxxx/yyyy
            String groupName =  pathTmp.substring(0, pathTmp.indexOf("/")); //获取第一个组 goup1
            String remotePath = pathTmp.substring(pathTmp.indexOf("/")+1);// /获取 剩余路径xxxxx/yyyy
            //调用工具类的delete方法
            FastDfsUtils.delete(groupName,remotePath);

            return JsonResult.me();
        } catch (Exception e) {
            e.printStackTrace();
            return JsonResult.me().setMsg("删除失败！");
        }
    }




}
